/*
* See LICENSE for licensing and NOTICE for copyright.
*/
package net.shibboleth.idp.cas.ticket.serialization;
import java.util.ArrayList;
import javax.annotation.Nonnull;
import net.shibboleth.idp.cas.ticket.ProxyGrantingTicket;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
import org.joda.time.Instant;
/**
* Serializes proxy-granting tickets in simple field-delimited form.
*
* @author Marvin S. Addison
*/
public class ProxyGrantingTicketSerializer extends AbstractTicketSerializer<ProxyGrantingTicket> {
@Override
@NotEmpty
protected String[] extractFields(@Nonnull final ProxyGrantingTicket ticket) {
final ArrayList<String> fields = new ArrayList<String>(4);
fields.add(ticket.getSessionId());
fields.add(ticket.getService());
fields.add(String.valueOf(ticket.getExpirationInstant().getMillis()));
if (ticket.getParentId() != null) {
fields.add(ticket.getParentId());
}
return fields.toArray(new String[fields.size()]);
}
@Override
@Nonnull
protected ProxyGrantingTicket createTicket(@Nonnull final String id, @NotEmpty final String[] fields) {
if (fields.length < 3) {
throw new IllegalArgumentException("Expected at least 3 fields but got " + fields.length);
}
return new ProxyGrantingTicket(
id,
fields[0],
fields[1],
new Instant(Long.valueOf(fields[2])),
fields.length > 3 ? fields[3] : null);
}
}